(function(){if(typeof window.locator=="object"){return;}var n,w,L,k,d,A={},F="LocatorMessages";gloader.load(["glow","1","glow.dom","glow.events","glow.net","glow.i18n"],{onLoad:function(P){n=P;w=n.events;L=n.net;k=n.lang;d=n.i18n;n.ready(function(){A.cookie=v();});d.addLocaleModule(F,"en",{help:{title:"My Location Help",body:"The My Location feature takes a location of your choice and uses it to display relevant information on the BBC News and Weather websites. You only need to set it in one place and the information is automatically shared."}});}});var y="MYLOC",h=".bbc.co.uk",u="365",O=4,e="@",q="|",g="~";var b=false;var K=4;var p=true,M="cachebuster=cb{random}",t="locator";var N={A:"WCW",B:"WID",C:"LOCATOR"};var J="http://news.bbc.co.uk",H="/weather/util/search/WeatherSuggestJSON",m="/weather/util/search/WeatherSearch",o="/weather/forecast/{loc}/Location";var B=J+H+".{format}?region={region}&search={search}&jsoncallback={callback}",s=J+m+".{format}?region={region}&search={search}&jsoncallback={callback}",f=J+m+".{format}?region={region}&lat={lat}&lon={lon}&radius={radius}&jsoncallback={callback}",D=J+o+".{format}?jsoncallback={callback}",c={format:"json",region:"world",search:""};var j={};var z=function(P,V,T){if(!V){return;}var T=T||{};if(j[P]){j[P].abort();j[P]=null;}if(t=="locator"){var R="c"+locator._callbackManagement.nextId++;P=k.interpolate(P,{callback:"locator._callbackManagement."+R});locator._callbackManagement[R]=function(W){j[P].destroy();j[P]=null;V(W);};}if(typeof T.useCache!=null&&!T.useCache){var Q=[new Date().getTime(),parseInt(Math.random()*100000)].join(""),U=(P.indexOf("?")>0?"&":"?");P+=U+k.interpolate(M,{random:Q});}var S=L.loadScript(P,{onLoad:function(W){j[P]=null;V(W);},onError:function(){j[P]=null;},useCache:true});if(t=="locator"){}j[P]=S;};var r=function(P){return N[P];};var G=function(Q){for(var P in N){if(N[P]==Q){return P;}}return null;};var I=function(Q,R){for(var S=0,P=Q.length;S",itemElementEnd:"",searchingClass:"searching",searchingMessage:"",noResultsMessage:"",inputElement:null,show:function(){this.autoSuggest.show();},hide:function(){this.autoSuggest.hide();},displaySearchingMessage:function(){this.autoSuggest.inputElement.addClass(this.searchingClass);if(this.showSearchMessage){this.displayMessage(this.searchingMessage);}},displayNoResultsMessage:function(){this.displayMessage(''+this.noResultsMessage+"");},displayMessage:function(f){this.autoSuggest.setData([{name:f}]);this.autoSuggest.find(f);var e=this;window.setTimeout(function(){e.autoSuggest.show();},10);},formatItem:function(e){return e.name+(e.context?", "+e.context:"");},inputChange:function(){if(this.autoSuggest.val().length0){this.autoSuggest.setData(p);this.autoSuggest.find();}}}};if(!window.locator){window.locator={};}if(!window.locator.ui){window.locator.ui={};}window.locator.ui=d;}});})();(function(){var b,a="postcode";gloader.load(["glow","1","glow.dom","glow.events","glow.widgets.AutoSuggest","glow.i18n"],{onLoad:function(e){b=e;locator.locales.ui="LocatorUI";b.i18n.addLocaleModule(locator.locales.ui,"en",{changeLocationButton:"Change My Location",confirmSave:{confirm:"Confirm",cancel:"Cancel",back:"Back",titleSet:'You have chosen to set My Location to: {location}',bodySet:'

My Location is also shared with the BBC Weather site.

Press Confirm to set your Location, or Cancel to leave it unset.

',titleChange:'You have chosen to change My Location from: {locationOld} to: {location}',bodyChange:'

My Location is also shared with the BBC Weather site.

Press Confirm if you are happy to make this change, or press Cancel to leave My Location as it is.

'},confirmClear:{confirm:"Confirm",cancel:"Cancel",title:"You have chosen to clear My Location.",body:'

Changing your setting here will also clear your location on the BBC Weather site.

Please press Confirm to clear My Location, or press Cancel to leave it set to:

{location}

'},results:{title:"Search Results for '{searchTerm}'"},pagination:{next:"Next",previous:"Prev"},autoSuggest:{searching:"Searching",noResults:"No results found, please try again"}});var c=[];window.locator.ui.Search=function(f,g){this.container=b.dom.get(f);this.searchTerm="";this.searchRegion=g.searchRegion;this.locale=b.i18n.getLocaleModule(locator.locales.ui);};window.locator.ui.Search.prototype={previousContents:[],search:function(g,h){var h=h||{};this.searchTerm=g;this.searchType=h.searchType||null;if(locator.debug){console.log("Search for %o with opts %o",g,h);}this.resetState();var f=this;locator.searchByPlaceName(g,function(j){if(!j){return;}if(j.results.length==0){b.events.fire(f,"noResults");}else{if(j.results.length==1){var i=j.results[0];if(i.has_forecast==0&&(i.type=="County"||i.type=="soundex_County")){if(locator.debug){console.log("COUNTY - only one result, searching again");}f.search(i.site_name,{searchType:"county_state"});}else{var k=k=new locator.Location(i.loc,i.site_name,(i.is_fsssi=="true"?false:true),(i.nation_id?i.nation_id:0));if(i.container){k.container=i.container;}if(locator.debug){console.log("Location object from search: ",k);}f.confirmLocationChange(k,function(l){if(locator.debug){console.log("Success!",l);}locator.setSharedLocationId(l.location.toString(),{_beforeEvent:function(){var m=[];if(i.where_i_live){m.push(i.where_i_live);}if(i.where_i_live_alt){m.push(i.where_i_live_alt);}locator._setDataSet("WID",m.join("~"));}});},function(l){if(locator.debug){console.log("User declined, go back.");}},{disambiguated:false});}}else{f.disambiguate(j);}}},{region:this.searchRegion,type:this.searchType});},showLocationChangeDialogue:function(m,q,i,f){var g=locator.getSharedLocationId()==null?false:true;var h=m.name+(m.container&&m.container!==a?", "+m.container:"");var s=this;var p=g?this.locale.confirmSave.titleChange:this.locale.confirmSave.titleSet;p=b.lang.interpolate(p,{location:h,locationOld:f.locationOld});var l=g?this.locale.confirmSave.bodyChange:this.locale.confirmSave.bodySet;var r=f.disambiguated?this.locale.confirmSave.back:this.locale.confirmSave.cancel;var o=b.lang.apply(this.locale,{title:p,body:l,cancel:r});var k=b.dom.create('

{title}

{body}
',{interpolate:o});var n=b.dom.create('',{interpolate:o});var j=b.dom.create('',{interpolate:o});k.append(j).append(n);this.previousContents.push(this.container.children());if(locator.debug){console.log("Pushed previous contents onto stack",this.previousContents.length);}b.events.fire(locator,locator.EVENTS.userShownLocationChange,{location:m});if(g){locator.transition(this.container,k.children(),"fadeIn");}else{locator.transition(this.container,k.children(),"slideDown");}b.events.addListener(n,"click",function(t){t.location=m;b.events.fire(locator,locator.EVENTS.userConfirmedLocationChange,t);s.previousContents.pop();q(t);if(!t.defaultPrevented()){s.container.empty();}s.container.removeClass("locator-msg-confirm");});b.events.addListener(j,"click",function(t){t.location=m;b.events.fire(locator,locator.EVENTS.userCancelledLocationChange,t);var u=s.previousContents.pop();i(t);if(!t.defaultPrevented()){locator.transition(s.container,u,"fadeIn");}s.container.removeClass("locator-msg-confirm");if(f.disambiguated){s.container.addClass("locator-msg-disambiguate");}});},confirmLocationChange:function(h,l,g,k){this.container.addClass("locator-msg-confirm");var j=locator.getSharedLocationId()==null?false:true;var i=h.name+(h.container&&h.container!==a?", "+h.container:"");var f=this;if(j){locator.fetchFromDataSet(locator.getSharedLocationId(),function(m){k.locationOld=(m&&m.name)?m.name:"Not Set";f.showLocationChangeDialogue(h,l,g,k);},"wcw");}else{this.showLocationChangeDialogue(h,l,g,k);}},resetState:function(){this.container.empty();this.container.removeClass("locator-msg-disambiguate");this.container.removeClass("locator-msg-confirm");this.previousContents=[];},invokeLocationChangeFromSingleResult:function(f){if(locator.debug){console.log("invokeLocationChangeFromSingleResult: ",f);}var g=new locator.Location(f.loc,(f.area_name?f.area_name:f.name),(f.area_name?true:false),(f.nation_id?f.nation_id:0));if(f.county){g.container=f.county;}this.resetState();this.confirmLocationChange(g,function(h){if(locator.debug){console.log("Success!",h);}locator.setSharedLocationId(h.location.toString(),{_beforeEvent:function(){var i=[];if(f.where_i_live){i.push(f.where_i_live);}if(f.where_i_live_alt){i.push(f.where_i_live_alt);}if(i.length>0){locator._setDataSet("WID",i.join("~"));}}});},function(h){if(locator.debug){console.log("User declined, go back.");}},{disambiguated:false});},disambiguate:function(l){if(l.results&&l.results.length>0){this.container.addClass("locator-msg-disambiguate");var j=b.lang.interpolate(this.locale.results.title,{searchTerm:l.searchTerms});var f=l.results;var i='

{resultsTitle}

';var g=b.dom.create(i,{interpolate:{resultsTitle:j}});var h=this.createResultsList(f);g.get(".locator-results").append(h);this.content=g;if(l.itemsPerPage<=l.totalResults){var k=new locator.ui.Paginator(this,this.content,l.itemsPerPage,l.totalResults);}locator.transition(this.container,this.content.children(),"slideDown");this.attachResultEventListeners();}},attachResultEventListeners:function(){var f=this;b.events.addListener(this.container.get(".locator-results a"),"click",function(g){var i=b.dom.get(g.source);if(i.data("type")&&i.data("type")=="county_state"&&i.data("searchTerm")){if(locator.debug){console.log("COUNTY - result click, searching again");}f.search(i.data("searchTerm"),{searchType:"county_state"});}else{f.container.removeClass("locator-msg-disambiguate");var h=i.data("loc");if(locator.debug){console.log("location selected",h);}f.selectLocation(h);}});},fetchResultSetAndUpdateResultsList:function(i,g,f){if(locator.debug){console.log("Fetch new result set for %o start %o, end %o for el %o",this.searchTerm,i,g);}var h=this;locator.searchByPlaceName(this.searchTerm,function(k){if(k.results){var j=h.createResultsList(k.results);j.attr("start",i+1);h.container.get(".locator-results").empty().append(j);h.attachResultEventListeners();f?f():null;}},{startIndex:i,region:this.searchRegion,type:this.searchType});},createResultsList:function(l){var j=b.dom.create("
    "),m,n,h;for(var k=0,g=l.length;k'+h.site_name+(h.type!=a&&h.container?", "+h.container:"")+"");anchor=m.get("a");n=new locator.Location(h.loc,h.site_name,(h.is_fsssi=="true"?false:true),(h.nation_id?h.nation_id:0));if(h.container){n.container=h.container;}var f=[];if(h.where_i_live){f.push(h.where_i_live);}if(h.where_i_live_alt){f.push(h.where_i_live_alt);}n._wids=f;anchor.data("loc",n);if(h.has_forecast==0&&(h.type=="County"||h.type=="soundex_County")){if(locator.debug){console.log("COUNTY - attach county_state type to anchor.data");}anchor.data("searchTerm",h.site_name);anchor.data("type","county_state");}j.append(m);}return j;},selectLocation:function(f){if(locator.debug){console.log("selectLocation ",f);}this.confirmLocationChange(f,function(g){var h=g.location;if(locator.debug){console.log("Confirm change: ",h.id,h.name);}locator.setSharedLocationId(h.toString(),{_beforeEvent:function(){if(h._wids&&h._wids.length){locator._setDataSet("WID",h._wids.join("~"));}}});},function(g){var h=g.location;if(locator.debug){console.log("Request failed, should go back?");}},{disambiguated:true});},on:function(f,g){b.events.addListener(this,f,g);}};window.locator.transition=function(h,j,g,i){var i=i||{},k=i.duration||0.3,f=i.tween||b.tweens.easeOut();if(locator.debug){console.log("transition: ",h,j,g,k,f);}h.empty();switch(g){case"slideDown":h.css("height","0px").css("overflow","hidden");break;case"slideUp":h.css("overflow","hidden");break;case"fadeIn":h.css("opacity",0);break;case"fadeOut":break;}h.append(j);b.anim[g](h,k,{tween:f});};window.locator.initAutoSuggest=function(q){var q=q||{},h=q.inputSelector||".locator-auto-suggest",g=b.dom.get(h),z=q.submitSelector||".locator-search",t=b.dom.get(z),u=q.formSelector||".locator-form",n=b.dom.get(u),m=q.msgSelector||".locator-msg",r=b.dom.get(m),p=q.parentSelector,l=p?b.dom.get(p):null,k=q.defaultSelectedEvent!=undefined?q.defaultSelectedEvent:true,x,o;function A(i){var B=i.locationId;if(B){if(l&&!l.hasClass("locator-location-set")){l.addClass("locator-location-set");}}else{if(l&&l.hasClass("locator-location-set")){l.removeClass("locator-location-set");}}}locator.on("locationChanged",A);A({locationId:locator.getSharedLocationId()});o=new locator.ui.Search(r,q);var w=0,y=c.length,v=g,s;for(;w",q=this.maxPagesToShow,g,o,m,l,n,p;if(this.totalPages>=this.numResultsPageToTriggerHigherPagination){q=this.maxPagesToShowHigher;}g=Math.ceil(q/2);if(this.currentPage<=g||this.totalPages<=q){o=1;l=q;}else{o=this.currentPage-g+1;l=this.currentPage-g+q;}if(l>this.totalPages){l=this.totalPages;}if(locator.debug){console.log("Generating page list: currentPage: %o, currentPageOffset: %o, totalPages: %o, pageStart: %o, pageEnd: %o",this.currentPage,g,this.totalPages,o,l);}n=(o>1)?true:false;p=(l"+h+"";}if(p){f+=j;}f+="";return f;},attachEventListeners:function(){var f=this;b.events.addListener(this.controls.get(".locator-control-prev"),"click",function(g){if(locator.debug){console.log("click prev");}var h=b.dom.get(this);if(f.startIndex!=0){if(locator.debug){console.log("prev is ok");}f.parent.fetchResultSetAndUpdateResultsList(f.startIndex-f.itemsPerPage,f.endIndex-f.itemsPerPage,function(){f.startIndex-=f.itemsPerPage;f.endIndex-=f.itemsPerPage;f.currentPage--;f.updatePrevNextLinks();});}g.preventDefault();});b.events.addListener(this.controls.get(".locator-control-next"),"click",function(g){if(locator.debug){console.log("click next");}if(f.currentPage1){this.controls.get(".locator-control-prev").removeClass("disabled");}else{this.controls.get(".locator-control-prev").addClass("disabled");}if(this.currentPage

    {confirmClear.title}

    {templWithLoc}
    ',{interpolate:m});var l=b.dom.create('',{interpolate:m});var g=b.dom.create('',{interpolate:m});h.append(g).append(l);var j=f.children();b.events.fire(locator,locator.EVENTS.userShownClearLocation);locator.transition(f,h.children(),"slideDown");b.events.addListener(l,"click",function(o){if(locator.debug){console.log("Confirm clear location");}b.events.fire(locator,locator.EVENTS.userConfirmedLocationChange,o);locator.clearSharedLocation();if(!o.defaultPrevented()){f.empty();}});b.events.addListener(g,"click",function(o){if(locator.debug){console.log("Cancelled clear location");}b.events.fire(locator,locator.EVENTS.userCancelledClearLocation,o);if(!o.defaultPrevented()){f.empty();f.append(j);}});};}});})();